import type {
  CropImg,
  RichDetails,
  Webview,
  WebsiteScanCode,
  StartPage,
  ActivityList,
  ActivityDetails,
  ApplicantsList,
  AdmissionList,
  SignInPage,
  ActivitySign,
  RegistrationUnderReview,
  AttendanceCard,
  Login,
  cardDetails,
  CardAccessRecord,
  EditPersonCard,
  AdmminEditPersonCard,
  EditBusinessCard,
  AdminEditBusinessCard,
  SelectShowMembers,
  EditAffiliatedCompanies,
  AdminEditAffiliatedCompanies,
  ElegantDemeanourManage,
  MembershipEdit,
  Questionnaire,
  MembershipManage,
  PaymentDetail,
  EditMyProfile,
  InformationType,
  MemberRights,
  MembershipInfo,
  PhotoAlbumDetails,
  AwaitPay,
  MemberApplyFormAudit,
  MemberSet,
  PersonInfo,
  MembershipCard,
  PersonAdd,
  PayInfo,
  PayDetail,
  BusinessInfo,
  IntendedDetails,
  AccessRecord,
  DuesSet,
  MemberDuesAudit,
  MemberRenewSet,
  MemberRenewAudit,
  PolicyServiceReport,
  PolicyDetail,
  CreateMemberCoupon,
  CouponSelectPermissions,
  CouponSelectPosition,
  MemberCouponDetails,
  CancelAfterVerificationList,
  CardMemberCouponList,
  RecordCouponCollection,
  CoopDetails,
  TypeSelection,
  OrderPreview,
  OrderDetails,
  PlayMode,
  UnlockStep,
  ConfirmCooperation,
  CooperationSet,
  TUIChat,
  LoginPhone,
  ReviewDetails,
  SignUpInfoConfirm,
  AddRetinue,
  ActivityScheduling,
  AttachmentManager,
  H5RichTextEditor,
  UserAgreement,
  PaymentInfoDetails,
  SelectedProductsList,
  ChooseProducts,
  CooperationResult,
  InviteCooperation,
  CreateServiceForm,
  CreateFormItem,
  SearchPage,
  StatisticsDetail,
  CreateServiceFormResult,
  ServiceFormPreview,
  FormDatas,
  ServiceFormFilling,
  ServiceFormFillingResult,
  ServiceFormRecordDetail,
  SysServiceFormRecord,
  ExportDetail,
  ActivityPersonManage,
  ActivityDetailsPreview,
  OrganizingUnitList,
  SignUpDetail,
  SelectTicketType,
  CreateActivityRegisterOrder,
  ActivityRegisterOrder,
  ActivityRegisterForm,
  ActivityRegisterDetail,
  ActivityManageRegisterDetail,
  AdminSignedIt,
  SelfRegistration,
  SignInResult,
  RegistrationRecord,
  ActivityResult,
  ApplyForExamine,
  RefundExamineDetail,
  ActivityBrowsingHistory,
  ActivityBrowsingHistoryDetail,
  InsertMpTutorials,
  InvitationRanking,
  InvitationRankingDetail,
  ActivityDetailInvitationRanking,
  ActivityDetailInvitationRankingDetail,
  AddPhotos,
  SignedOnBehalfOf,
  BigScreenManagement,
  ConnectionSquare,
  UserHomePage,
  MyProfile,
  SupplyDemandDetails,
  AnsweringQuestionsList,
  EditBusinessOpportunitiesDetail,
  ApplyCooperation,
  ApplyCooperationResult,
  PublicSelectUserList,
  IntentionDetails,
  ApplicationMatchingRecord,
  ApplicationMatchingRecordDetails,
  IntentionCooperation,
  IntentionStatisticsDetail,
  ReleaseBusinessOpportunities,
  QuestionDetails,
  BusinessOpportunitieAuditDetail,
  BusinessOpportunitieDetail,
  FollowUpRecords,
  AddFollowUpRecords,
  SingleQuestionManage,
  CooperativeAuditDetail,
  ReleaseBoResult,
  ExtensionDtail,
  DetailedBrowseRecord,
  MyBusinessOpportunities,
  BusinessOpportunitiesDataBrowse,
  BusinessOpportunitiesData,
  BusinessOpportunitiesFormCreate,
  QuestionManage,
  BoPromotionalPage,
  PuppetTaabarPage
} from './modules';

export type NavOptions = {
  login: Login;
  loginPhone: LoginPhone;
  userAgreement: UserAgreement;
  cropImg: CropImg;
  startPage: StartPage;
  webview: Webview;
  h5RichTextEditor: H5RichTextEditor;
  richDetails: RichDetails;
  activity: ActivityList;
  activityDetails: ActivityDetails;
  addRetinue: AddRetinue;
  signUpInfoConfirm: SignUpInfoConfirm;
  applicantsList: ApplicantsList;
  activityScheduling: ActivityScheduling;
  admissionList: AdmissionList;
  signInPage: SignInPage;
  activitySign: ActivitySign;
  registrationUnderReview: RegistrationUnderReview;
  attendanceCard: AttendanceCard;
  businessCard: cardDetails;
  personCard: cardDetails;
  cardAccessRecord: CardAccessRecord;
  editPersonCard: EditPersonCard;
  adminEditPersonCard: AdmminEditPersonCard;
  editAffiliatedCompanies: EditAffiliatedCompanies;
  adminEditAffiliatedCompanies: AdminEditAffiliatedCompanies,
  elegantDemeanourManage: ElegantDemeanourManage;
  editBusinessCard: EditBusinessCard;
  adminEditBusinessCard: AdminEditBusinessCard;
  selectShowMembers: SelectShowMembers;
  membershipEdit: MembershipEdit;
  questionnaire: Questionnaire;
  membershipManage: MembershipManage;
  paymentDetail: PaymentDetail;
  editMyProfile: EditMyProfile;
  websiteScanCode: WebsiteScanCode;
  informationType: InformationType;
  memberRights: MemberRights;
  membershipInfo: MembershipInfo;
  photoAlbumDetails: PhotoAlbumDetails;
  awaitPay: AwaitPay;
  memberApplyFormAudit: MemberApplyFormAudit;
  memberInfoApplyAudit: MemberApplyFormAudit;
  adminMembershipInfo: MemberApplyFormAudit;
  paymentInfoDetails: PaymentInfoDetails;
  memberSet: MemberSet;
  personInfo: PersonInfo;
  membershipCard: MembershipCard;
  personAdd: PersonAdd;
  payInfo: PayInfo;
  payDetail: PayDetail;
  weChatOfficialAccountLink: RichDetails;
  businessInfo: BusinessInfo;
  intendedDetails: IntendedDetails;
  accessRecord: AccessRecord;
  duesSet: DuesSet;
  memberDuesAudit: MemberDuesAudit;
  memberRenewSet: MemberRenewSet;
  memberRenewAudit: MemberRenewAudit;
  policyServiceReport: PolicyServiceReport;
  policyDetail: PolicyDetail;
  createMemberCoupon: CreateMemberCoupon;
  couponSelectPermissions: CouponSelectPermissions;
  couponSelectPosition: CouponSelectPosition;
  memberCouponDetails: MemberCouponDetails;
  cancelAfterVerificationList: CancelAfterVerificationList;
  cardMemberCouponList: CardMemberCouponList;
  recordCouponCollection: RecordCouponCollection;
  cooperationDetails: CoopDetails;
  typeSelection: TypeSelection;
  unlockContactWayPreview: OrderPreview;
  unlockOrder: OrderDetails;
  unlockStep: UnlockStep;
  playMode: PlayMode;
  membershipOrder: OrderDetails;
  confirmCooperation: ConfirmCooperation;
  cooperationSet: CooperationSet;
  TUIChat: TUIChat;
  reviewDetails: ReviewDetails;
  attachmentManager: AttachmentManager,
  selectedProductsList: SelectedProductsList,
  chooseProducts: ChooseProducts
  cooperationResult: CooperationResult,
  cooperationInvitationDetail: CoopDetails,
  createFormItem: CreateFormItem
  inviteCooperation: InviteCooperation,
  createServiceForm: CreateServiceForm,
  searchPage: SearchPage,
  statisticsDetail: StatisticsDetail,
  createServiceFormResult: CreateServiceFormResult,
  serviceFormPreview: ServiceFormPreview,
  formDatas: FormDatas
  serviceFormFilling: ServiceFormFilling
  serviceFormFillingResult: ServiceFormFillingResult
  appServiceFormRecordDetail: ServiceFormRecordDetail,
  collectRecordDetails: ServiceFormRecordDetail
  sysServiceFormRecord: SysServiceFormRecord
  exportDetail: ExportDetail,
  activityPersonManage: ActivityPersonManage,
  activityDetailsPreview: ActivityDetailsPreview,
  organizingUnitList: OrganizingUnitList,
  signUpDetail: SignUpDetail,
  selectTicketType: SelectTicketType,
  activityResult: ActivityResult
  createActivityRegisterOrder: CreateActivityRegisterOrder,
  activityRegisterOrder: ActivityRegisterOrder,
  activityRegisterForm: ActivityRegisterForm,
  activityRegisterDetail: ActivityRegisterDetail,
  activityManageRegisterDetail: ActivityManageRegisterDetail,
  adminSignedIt: AdminSignedIt,
  selfRegistration: SelfRegistration,
  signInResult: SignInResult,
  registrationRecord: RegistrationRecord,
  applyForExamine: ApplyForExamine,
  refundExamineDetail: RefundExamineDetail,
  activityBrowsingHistory: ActivityBrowsingHistory,
  activityBrowsingHistoryDetail: ActivityBrowsingHistoryDetail
  insertMpTutorials: InsertMpTutorials,
  invitationRanking: InvitationRanking,
  invitationRankingDetail: InvitationRankingDetail,
  activityDetailInvitationRanking: ActivityDetailInvitationRanking,
  activityDetailInvitationRankingDetail: ActivityDetailInvitationRankingDetail,
  addPhotos: AddPhotos,
  signedOnBehalfOf: SignedOnBehalfOf,
  bigScreenManagement: BigScreenManagement,
  connectionSquare: ConnectionSquare,
  userHomePage: UserHomePage,
  myProfile: MyProfile,
  supplyDemandDetails: SupplyDemandDetails,
  answeringQuestionsList: AnsweringQuestionsList,
  editBusinessOpportunitiesDetail: EditBusinessOpportunitiesDetail
  applyDirectCooperation: ApplyCooperation
  requestAdminMatch: ApplyCooperation
  applyCooperationResult: ApplyCooperationResult
  publicSelectUserList: PublicSelectUserList
  publicSelectedUserList: PublicSelectUserList
  intentionDetails: IntentionDetails
  applicationMatchingRecord: ApplicationMatchingRecord
  applicationMatchingRecordDetails: ApplicationMatchingRecordDetails
  intentionCooperation: IntentionCooperation
  intentionStatisticsDetail: IntentionStatisticsDetail
  releaseBusinessOpportunities: ReleaseBusinessOpportunities
  questionDetails: QuestionDetails
  businessOpportunitieAuditDetail: BusinessOpportunitieAuditDetail
  businessOpportunitieDetail: BusinessOpportunitieDetail
  followUpRecords: FollowUpRecords
  addFollowUpRecords: AddFollowUpRecords
  singleQuestionManage: SingleQuestionManage
  cooperativeAuditDetail: CooperativeAuditDetail
  releaseBoResult: ReleaseBoResult
  extensionDtail: ExtensionDtail
  detailedBrowseRecord: DetailedBrowseRecord
  myBusinessOpportunities: MyBusinessOpportunities
  businessOpportunitiesDataBrowse: BusinessOpportunitiesDataBrowse
  businessOpportunitiesData: BusinessOpportunitiesData
  businessOpportunitiesFormCreate: BusinessOpportunitiesFormCreate
  questionManage: QuestionManage
  boPromotionalPage: BoPromotionalPage
  puppetTaabarPage: PuppetTaabarPage
  puppetTaabarPage_1: PuppetTaabarPage
  puppetTaabarPage_2: PuppetTaabarPage
  puppetTaabarPage_3: PuppetTaabarPage
};

export type OnloadOptions<T> = T extends keyof NavOptions ? NavOptions[T] : Recordable;

type NavigateToOptions<T> = {
  name: T;
  animationType?: UniApp.NavigateToOptions['animationType'];
  animationDuration?: UniApp.NavigateToOptions['animationDuration'];
};
export type CustomNavigateToOptions<T> = T extends keyof NavOptions
  ? NavigateToOptions<T> & { options: OnloadOptions<T> }
  : NavigateToOptions<T> & { options?: Recordable };
